package thread;

/**
 * @author zxl
 * @version 1.0
 * @date 2021/10/26 16:21
 * 静态代理（设计模式）（三种代理模式  静态代理  动态代理 Cglib）
 * 真实对象和代理对象都实现真实对象的接口
 * 代理对象代理真实角色
 * 好处：代理对象能做真实对象做不了的是
 *      真实对象专注做自己的事
 * 缺点:因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护.
 */
public class staticPorxy {
    public static void main(String[] args) {
        PorxyMan porxyMan = new PorxyMan(new RealMan());
        porxyMan.Marrys();
    }
}
//真实对象接口
interface Marry{
    void Marrys();
}
//真实对象
class RealMan implements Marry{
    @Override
    public void Marrys() {
        System.out.println("结婚了");
    }
}
//代理对象
class PorxyMan implements Marry{

    //获得真实对象
    RealMan realMan;

    public PorxyMan(RealMan realMan) {
        this.realMan = realMan;
    }

    @Override
    public void Marrys() {
        System.out.println("结婚前");
        this.realMan.Marrys();  //真实对象
        System.out.println("结婚后");
    }

}

